A business process is usually described as a sequence of steps and actions, with a clear start and an end. The output of one step provides the input for the next step. Different methods have been developed to model business processes and software tools have been developed to support the information flows related to business processes. While traditionally, enterprise applications were developed to support the actions taken and information processed with a particular step in the process, it is only recently that methods and tools have been developed to support the whole process and the exchange of information between different enterprise applications (example: transfer of information from the ordering system, to the billing system and subsequently to the accounting system). More specifically, workflow systems allow to model graphically the different steps in the process and to connect the output of one step with the input of the next step in the process. These tools usually allow software coding to implement business logic and do data manipulations.
The inconvenience with workflow systems is that the process flow has always to go through a path connecting subsequent steps to reach the end of the process in a deterministic way. Each step in the process is not aware of the whole process; it receives input from its predecessor, does some processing and provides input to its successor. In the real world, processes do not always work that way and workflows are not always the most natural way to represent business interactions between individuals, organizations and systems.
The aim of business processes is to manipulate or transform a business object (like an order, a shipment, a parcel or any business transaction) that is handed over between different individuals, locations, organizations or systems until completion of the transaction. The business objects can be physical (e.g. a parcel) or electronic (e.g. an electronic message). The behavior of such an object can be modeled with a state diagram: during its lifecycle, the object will go through different states. Actions are linked to a particular state of the object. As soon as an object arrives in a certain state, appropriate actions can be taken.
The challenge is to maintain the consistency between the real physical state of the object and the virtual state as maintained by the information system and take the actions linked to valid state transitions in an appropriate way. During the lifecycle of the object, different agents on remote systems will publish events on the current state of the object. Due to the nature of the distributed network like the Internet, the published events do not always arrive to the central information system, there may be delay between the moment that the event was created and the moment it is received in the central system, events may arrive in the wrong order and there may be many occurrences of the same event. In other words, the generation of events is non-deterministic. Existing systems are unable to do so.
A system is needed that provides a generic solution to cope with this complexity.